package com.design.pattern.factory;

/**
 * @author wangyingjie
 * @date
 * @remark 制造披萨
 */
public abstract class OrderPizza {
    PizzaFactory pizzaFactory;

    /**
     * 工厂模式
     * @param type
     * @return
     */
    public Pizza order(String type){

//        Pizza pizza = pizzaFactory.createPizza(type);//简单工厂模式
        Pizza pizza = createPizza(type);//抽象工厂模式，此时此类变成一个超级工厂，子类是各自的子工厂
        pizza.bake();
        pizza.box();
        pizza.cut();
        pizza.prepare();
        return pizza;
    }

    /**
     * 不同的子类各自实现创建对象方法
     * @param type
     * @return
     */
    abstract Pizza createPizza(String type);

}
